今日進度5/14:
研究如何把營養標示辨識結果與個人化建議用tts轉換成語音檔案後傳LINE給用戶。
首先,撇除掉Side Project,先單獨測試了用戶傳文字就收到語音檔的部份,是可以運作的;
但是回去Side Project,改成將營養標示辨識結果與個人化建議用tts轉換成語音檔案,卻無法成功傳至LINE給用戶呢?
👽--我
🫡--Gemini
👽為什麼單純請用戶輸入文字轉語音就可以成功、但接回營養標示辨識的程式碼就會失敗呢?
🫡你問了一個非常好的問題,這點正是許多人在開發 LINE BOT 時會遇到的挑戰!好奇為什麼單純的文字轉語音範例能成功,而整合到營養標示辨識程式碼後就會出現問題。
簡單文字轉語音 vs. 營養標示辨識的複雜度
答案在於兩者之間流程的複雜度和外部依賴的數量有顯著差異:
這個流程相對簡單直接,主要只涉及一次 Azure API 呼叫 (TTS) 和一次本地檔案伺服。
👽那我的下一步要怎麼修正?
🫡(給了我超~長一串解決方法)
簡單來說,就是需要重新啟動 ngrok 並更新 URL,然後更新 LINE Developers 後台的 Webhook URL、
重新啟動你的 Flask 應用程式(詳細步驟略)
咦?這些步驟我昨天都做過了呀...算了還是再做一次看看...
竟然成功了!我的LINE BOT可以回傳音檔給用戶了(歡呼)
然後我發現它會朗讀emoji,譬如😊它會唸「微笑的臉」,所以我請它朗讀時移除emoji,殊不知這是災難的開始,接下來測試生成的音檔全部都只朗讀營養組成、沒有朗讀個人化建議與鼓勵,我找錯誤來源找了好多次都失敗,後來發現問題應該是因為這個 tts_personalized_advice = remove_emojis(personalized_advice_text)
跟這個text = re.sub(r'[\U000026A0\U0001F621\U0001F62C\U0001F60A\U0001F629\U0001F62F\U0001F635\U0001F92C\U0001F4AA\U0001F92B\U0001F974\U0001F35E\U0001F36C\U0001F373\U0001F9C2\U0001F35A]', '', text)
這行代碼因為匹配的 Unicode 範圍過於廣泛,導致它不僅移除了表情符號,也移除許多正常的文字內容,所以就變成空字串...所以我就暫時把移除表情符號的需求拿掉,之後再想辦法吧!
明日進度: